001    /*
002     * Matrix.java
003     *
004     * Copyright 2003 Sergio Anibal de Carvalho Junior
005     *
006     * This file is part of NeoBio.
007     *
008     * NeoBio is free software; you can redistribute it and/or modify it under the terms of
009     * the GNU General Public License as published by the Free Software Foundation; either
010     * version 2 of the License, or (at your option) any later version.
011     *
012     * NeoBio is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
013     * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
014     * PURPOSE. See the GNU General Public License for more details.
015     *
016     * You should have received a copy of the GNU General Public License along with NeoBio;
017     * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
018     * Boston, MA 02111-1307, USA.
019     *
020     * Proper attribution of the author as the source of the software would be appreciated.
021     *
022     * Sergio Anibal de Carvalho Junior             mailto:sergioanibaljr@users.sourceforge.net
023     * Department of Computer Science               http://www.dcs.kcl.ac.uk
024     * King's College London, UK                    http://www.kcl.ac.uk
025     *
026     * Please visit http://neobio.sourceforge.net
027     *
028     * This project was supervised by Professor Maxime Crochemore.
029     *
030     */
031    
032    package neobio.alignment;
033    
034    /**
035     * This interface defines a minimal set of operations that a matrix must implement. This
036     * interface is used by the {@linkplain Smawk} class to provide a general services
037     * regardless of how the matrix is actually stored.
038     *
039     * @author Sergio A. de Carvalho Jr.
040     * @see Smawk
041     */
042    public interface Matrix
043    {
044            /**
045             * Returns the value at an specified row and column.
046             *
047             * @param row row number of element to be retrieved
048             * @param col column number of element to be retrieved
049             * @return value at row <CODE>row</CODE> column <CODE>col</CODE>
050             */
051            public int valueAt (int row, int col);
052    
053            /**
054             * Returns the number of rows that this matrix has.
055             *
056             * @return number of rows
057             */
058            public int numRows ();
059    
060            /**
061             * Returns the number of columns that this matrix has.
062             *
063             * @return number of columns
064             */
065            public int numColumns ();
066    }